﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RapChieuPhim.DTO;
using System.Data.SqlClient;
using System.Data;
using System.Collections;
using RapChieuPhim.BUS;

namespace RapChieuPhim.DAO
{
    class NhanVienDAO
    {
        public NhanVienDTO GetByID(string id)
        {
            DataProvider cn = new DataProvider();
            SqlParameter param = new SqlParameter("@MaNV", id);
            DataTable dt = cn.SqlExcuteQuery("LayNhanVienTheoID", param);
            NhanVienDTO NhanVien = new NhanVienDTO();

            if (dt.Rows.Count != 0)
            {
                NhanVien.MaNhanVien = dt.Rows[0]["MaNV"].ToString();
                NhanVien.HoTen = dt.Rows[0]["HoTen"].ToString();
                NhanVien.CMND = dt.Rows[0]["CMND"].ToString();
                NhanVien.NgaySinh = DateTime.Parse(dt.Rows[0]["NgaySinh"].ToString());
                NhanVien.GioiTinh = Boolean.Parse(dt.Rows[0]["GioiTinh"].ToString());
                NhanVien.DiaChi = dt.Rows[0]["DiaChi"].ToString();
                NhanVien.DienThoai = dt.Rows[0]["DienThoai"].ToString();
                NhanVien.Rap = RapBUS.GetByID(int.Parse(dt.Rows[0]["MaRap"].ToString()));
                NhanVien.ChucVu = ChucVuBUS.GetByID(int.Parse(dt.Rows[0]["MaCV"].ToString()));
            }
            return NhanVien;
        }

        public IList GetAll()
        {
            DataProvider cn = new DataProvider();
            ArrayList array = new ArrayList();
            DataTable dt = cn.SqlExcuteQuery("LayAllNhanVien");

            if (dt.Rows.Count != 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    NhanVienDTO NhanVien = new NhanVienDTO();
                    NhanVien.MaNhanVien = dr["MaNV"].ToString();
                    NhanVien.HoTen = dr["HoTen"].ToString();
                    NhanVien.CMND = dr["CMND"].ToString();
                    NhanVien.NgaySinh = DateTime.Parse(dr["NgaySinh"].ToString());
                    NhanVien.GioiTinh = Boolean.Parse(dr["GioiTinh"].ToString());
                    NhanVien.DiaChi = dr["DiaChi"].ToString();
                    NhanVien.DienThoai = dr["DienThoai"].ToString();
                    NhanVien.Rap = RapBUS.GetByID(int.Parse(dr["MaRap"].ToString()));
                    NhanVien.ChucVu = ChucVuBUS.GetByID(int.Parse(dr["MaCV"].ToString()));                  
                    array.Add(NhanVien);
                }
            }
            return array;
        }

        public void Insert(NhanVienDTO NhanVien)
        {
            DataProvider cn = new DataProvider();
            SqlParameter[] param = new SqlParameter[9];
            param[0] = new SqlParameter("@MaNV", NhanVien.MaNhanVien);
            param[1] = new SqlParameter("@HoTen", NhanVien.HoTen);
            param[2] = new SqlParameter("@CMND", NhanVien.CMND);
            param[3] = new SqlParameter("@NgaySinh", NhanVien.NgaySinh);
            param[4] = new SqlParameter("@GioiTinh", NhanVien.GioiTinh);
            param[5] = new SqlParameter("@DiaChi", NhanVien.DiaChi);
            param[6] = new SqlParameter("@DienThoai", NhanVien.DienThoai);
            param[7] = new SqlParameter("@MaRap", NhanVien.Rap);
            param[8] = new SqlParameter("@MaCV", NhanVien.ChucVu);
            cn.SqlExcuteNonQuery("InsertNhanVien", param);
        }

        public void Update(NhanVienDTO NhanVien)
        {
            DataProvider cn = new DataProvider();
            SqlParameter[] param = new SqlParameter[9];
            param[0] = new SqlParameter("@MaNV", NhanVien.MaNhanVien);
            param[1] = new SqlParameter("@HoTen", NhanVien.HoTen);
            param[2] = new SqlParameter("@CMND", NhanVien.CMND);
            param[3] = new SqlParameter("@NgaySinh", NhanVien.NgaySinh);
            param[4] = new SqlParameter("@GioiTinh", NhanVien.GioiTinh);
            param[5] = new SqlParameter("@DiaChi", NhanVien.DiaChi);
            param[6] = new SqlParameter("@DienThoai", NhanVien.DienThoai);
            param[7] = new SqlParameter("@MaRap", NhanVien.Rap.MaRap);
            param[8] = new SqlParameter("@MaCV", NhanVien.ChucVu.MaCV);
            cn.SqlExcuteNonQuery("UpdateNhanVien", param);
        }

        public void Delete(string id)
        {
            DataProvider cn = new DataProvider();
            SqlParameter param = new SqlParameter("@MaNV", id);
            cn.SqlExcuteNonQuery("DeleteNhanVien", param);
        }
    }
}
